import { IPSModelObject } from '../../ipsmodel-object';
import { IPSCodeList } from '../../codelist/ipscode-list';
import { IPSControlItemNavigatable } from '../ipscontrol-item-navigatable';
import { IPSChartCoordinateSystem } from './ipschart-coordinate-system';
import { IPSChartDataSet } from './ipschart-data-set';
import { IPSChartSeriesEncode } from './ipschart-series-encode';
import { IPSLanguageRes } from '../../res/ipslanguage-res';
import { IPSSysPFPlugin } from '../../res/ipssys-pfplugin';

/**
 *
 * 子接口类型识别属性[]
 * @export
 * @interface IPSChartSeries
 */
export interface IPSChartSeries extends IPSModelObject, IPSControlItemNavigatable {
  /**
   * 基础配置Json内容
   * @type {string}
   */
  baseOptionJOString: string;

  /**
   * 标题语言资源对象
   *
   * @type {IPSLanguageRes}
   */
  getCapPSLanguageRes(): IPSLanguageRes | null;

  /**
   * 标题语言资源对象
   *
   * @type {IPSLanguageRes}
   */
  get capPSLanguageRes(): IPSLanguageRes | null;

  /**
   * 标题语言资源对象（必须存在）
   *
   * @type {IPSLanguageRes}
   */
  getCapPSLanguageResMust(): IPSLanguageRes;

  /**
   * 标题
   * @type {string}
   */
  caption: string;

  /**
   * 分类属性
   * @type {string}
   */
  catalogField: string;

  /**
   * 分类代码表对象
   *
   * @type {IPSCodeList}
   */
  getCatalogPSCodeList(): IPSCodeList | null;

  /**
   * 分类代码表对象
   *
   * @type {IPSCodeList}
   */
  get catalogPSCodeList(): IPSCodeList | null;

  /**
   * 分类代码表对象（必须存在）
   *
   * @type {IPSCodeList}
   */
  getCatalogPSCodeListMust(): IPSCodeList;

  /**
   * 值属性
   * @type {string}
   */
  dataField: string;

  /**
   * ECharts序列类型
   * @description 值模式 [实体图表序列类型] {area：区域图(Area)、 bar：条形图(Bar)、 bar3d：条形图3D(旧)(Bar3D)、 candlestick：K线图(Candlestick)、 gauge：仪表盘(Gauge)、 line：折线图(Line)、 pie：饼图(Pie)、 pie3d：饼图3D(旧)(Pie3D)、 radar：雷达图(Radar)、 scatter：散点图(Scatter)、 column：柱状图(Column)、 funnel：漏斗图(Funnel)、 map：地图(Map)、 custom：自定义(Custom) }
   * @type {( string | 'area' | 'bar' | 'bar3d' | 'candlestick' | 'gauge' | 'line' | 'pie' | 'pie3d' | 'radar' | 'scatter' | 'column' | 'funnel' | 'map' | 'custom')}
   */
  eChartsType: string | 'area' | 'bar' | 'bar3d' | 'candlestick' | 'gauge' | 'line' | 'pie' | 'pie3d' | 'radar' | 'scatter' | 'column' | 'funnel' | 'map' | 'custom';

  /**
   * 扩展值2属性
   * @type {string}
   */
  extValue2Field: string;

  /**
   * 扩展值3属性
   * @type {string}
   */
  extValue3Field: string;

  /**
   * 扩展值4属性
   * @type {string}
   */
  extValue4Field: string;

  /**
   * 扩展值属性
   * @type {string}
   */
  extValueField: string;

  /**
   * 分组模式
   * @description 值模式 [云实体图表自动分组模式] {YEAR：年、 QUARTER：季度、 MONTH：月份、 YEARWEEK：年周、 DAY：日、 CODELIST：代码表 }
   * @type {( string | 'YEAR' | 'QUARTER' | 'MONTH' | 'YEARWEEK' | 'DAY' | 'CODELIST')}
   */
  groupMode: string | 'YEAR' | 'QUARTER' | 'MONTH' | 'YEARWEEK' | 'DAY' | 'CODELIST';

  /**
   * 序列标识属性
   * @type {string}
   */
  idField: string;

  /**
   * 图表坐标系统
   *
   * @type {IPSChartCoordinateSystem}
   */
  getPSChartCoordinateSystem(): IPSChartCoordinateSystem | null;

  /**
   * 图表坐标系统
   *
   * @type {IPSChartCoordinateSystem}
   */
  get psChartCoordinateSystem(): IPSChartCoordinateSystem | null;

  /**
   * 图表坐标系统（必须存在）
   *
   * @type {IPSChartCoordinateSystem}
   */
  getPSChartCoordinateSystemMust(): IPSChartCoordinateSystem;

  /**
   * 图表数据集对象
   *
   * @type {IPSChartDataSet}
   */
  getPSChartDataSet(): IPSChartDataSet | null;

  /**
   * 图表数据集对象
   *
   * @type {IPSChartDataSet}
   */
  get psChartDataSet(): IPSChartDataSet | null;

  /**
   * 图表数据集对象（必须存在）
   *
   * @type {IPSChartDataSet}
   */
  getPSChartDataSetMust(): IPSChartDataSet;

  /**
   * 图表序列编码
   *
   * @type {IPSChartSeriesEncode}
   */
  getPSChartSeriesEncode(): IPSChartSeriesEncode | null;

  /**
   * 图表序列编码
   *
   * @type {IPSChartSeriesEncode}
   */
  get psChartSeriesEncode(): IPSChartSeriesEncode | null;

  /**
   * 图表序列编码（必须存在）
   *
   * @type {IPSChartSeriesEncode}
   */
  getPSChartSeriesEncodeMust(): IPSChartSeriesEncode;

  /**
   * 前端扩展插件
   *
   * @type {IPSSysPFPlugin}
   */
  getPSSysPFPlugin(): IPSSysPFPlugin | null;

  /**
   * 前端扩展插件
   *
   * @type {IPSSysPFPlugin}
   */
  get psSysPFPlugin(): IPSSysPFPlugin | null;

  /**
   * 前端扩展插件（必须存在）
   *
   * @type {IPSSysPFPlugin}
   */
  getPSSysPFPluginMust(): IPSSysPFPlugin;

  /**
   * 序列名称属性
   * @type {string}
   */
  seriesField: string;

  /**
   * 结果集行列模式
   * @type {string}
   */
  seriesLayoutBy: string;

  /**
   * 序列代码表对象
   *
   * @type {IPSCodeList}
   */
  getSeriesPSCodeList(): IPSCodeList | null;

  /**
   * 序列代码表对象
   *
   * @type {IPSCodeList}
   */
  get seriesPSCodeList(): IPSCodeList | null;

  /**
   * 序列代码表对象（必须存在）
   *
   * @type {IPSCodeList}
   */
  getSeriesPSCodeListMust(): IPSCodeList;

  /**
   * 图形类型
   * @description 值模式 [实体图表序列类型] {area：区域图(Area)、 bar：条形图(Bar)、 bar3d：条形图3D(旧)(Bar3D)、 candlestick：K线图(Candlestick)、 gauge：仪表盘(Gauge)、 line：折线图(Line)、 pie：饼图(Pie)、 pie3d：饼图3D(旧)(Pie3D)、 radar：雷达图(Radar)、 scatter：散点图(Scatter)、 column：柱状图(Column)、 funnel：漏斗图(Funnel)、 map：地图(Map)、 custom：自定义(Custom) }
   * @type {( string | 'area' | 'bar' | 'bar3d' | 'candlestick' | 'gauge' | 'line' | 'pie' | 'pie3d' | 'radar' | 'scatter' | 'column' | 'funnel' | 'map' | 'custom')}
   */
  seriesType: string | 'area' | 'bar' | 'bar3d' | 'candlestick' | 'gauge' | 'line' | 'pie' | 'pie3d' | 'radar' | 'scatter' | 'column' | 'funnel' | 'map' | 'custom';

  /**
   * 标记属性
   * @type {string}
   */
  tagField: string;

  /**
   * 值属性
   * @type {string}
   */
  valueField: string;

  /**
   * 支持图表数据集
   * @type {boolean}
   */
  enableChartDataSet: boolean;
}
